[StorageGateway]明示的にキャッシュをクリアする機能等が追加されました
はじめに
こんにちは、岩城です。
StorageGatewayに機能アップデートがありましたのでレポートします。
AWS Storage Gateway Announces Increased Throughput and Adds New Caching Capability
3つのアップデート
- パフォーマンスの向上
- DNSおよびNTP設定の追加
- ゲートウェイのキャッシュリフレッシュ機能の追加
ゲートウェイのパフォーマンス向上
AWSが推奨する構成を取ることで、各ゲートウェイ(ファイルゲートウェイ、ボリュームゲートウェイ、テープゲートウェイ)のパフォーマンスの最適化を図れます。
ファイルゲートウェイ
推奨設定 | 書き込みスループット(ファイルサイズ>6MB) |
Root disk: 80 GB io1, 4,000 IOPS Cache disk: 512 GiB EBS cache, io1, 1,500 provisioned IOPS Minimum network performance: 1 Gbps Amazon EC2 instance: c5.4xlarge |
125 MiB/s |
Storage Gateway Hardware Appliance Minimum network performance: 5 Gbps |
300 MiB/s |
Root disk: 80 GB io1, 4,000 IOPS Cache disk: Two 1.9 TiB NVME caches (ephemeral) Minimum network performance: 5 Gbps Amazon EC2 instance: i3.4xlarge (AWS Storage Gateway のローカルディスクの管理) |
500 MiB/s |
ボリュームゲートウェイ
- 高性能ディスクを使用する
- ゲートウェイホストにCPUリソースを追加する
- 別の物理ディスクを使用するゲートウェイ仮想ディスクのバックアップ
- ボリューム構成を変更する
テープゲートウェイ
- テープドライブのブロックサイズを大きくする
DNSおよびNTP設定の追加
ファイルゲートウェイの独自のドメインネームサービス(DNS)サーバーとネットワークタイムプロトコル(NTP)サーバーを指定できるようになり、オンプレミスネットワークとセキュリティポリシーとの統合が簡単になりました。とWhat's newに記載ありましたが、コンソール上からは確認できませんでした。確認が取れ次第追記します。
ゲートウェイのキャッシュリフレッシュ機能の追加
私の推しはココです!
以前、StorageGatewayを利用してインスタンスからS3バケットをNFSマウントするブログを書きました。 [Storage Gateway] EC2からS3バケットをNFSマウントしてみた〜2018年冬〜
後から指摘されて知ったのですが、例えば、StorageGatewayを介してS3にファイルをputした場合には、即座にインスタンス側から認識できますが、直接S3にputしたファイルをインスタンス側から認識するまでには時間が掛かかっていました。これは、StorageGatewayがキャッシュした情報をインスタンスが参照しているためです。
今回追加された機能により、キャッシュをリフレッシュすることで、上記ケースを回避できるようになりました。
リフレッシュ方法
コンソールとcliからのリフレッシュ方法を紹介します。
コンソール
cli
AWS CLI Command Reference(refresh-cache)
$ aws storagegateway refresh-cache --file-share-arn arn:aws:storagegateway:ap-northeast-1:<AWSアカウントID>:share/<ファイル共有ID> { "FileShareARN": "arn:aws:storagegateway:ap-northeast-1:<AWSアカウントID>share/<ファイル共有ID>" }
やってみた
前提
以下の環境構築手順を割愛します。
- StorageGatewayのファイルゲートウェイを作成してインスタンスにマウントする
- インスタンスからS3やStorageGatewayを操作するためのロール設定
動作確認
/home/ec2-user/storage
にS3バケットの20181211-iwaki-test
がマウントされていることを確認します。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 460K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 1.3G 6.8G 16% / xxx.xx.xx.xxx:/20181211-iwaki-test 8.0E 0 8.0E 0% /home/ec2-user/storage tmpfs 99M 0 99M 0% /run/user/1000
StorageGatewayを介さずに、インスタンスからS3にファイルをputします。コンソールからのアップロードでも構いません。
$ touch /tmp/testfile $ aws s3 cp /tmp/testfile s3://20181211-iwaki-test $ aws s3 ls s3://20181211-iwaki-test 2018-12-13 11:50:19 0 testfile
マウントしたディレクトリからputしたファイルを確認してみます。
$ ls -l /home/ec2-user/storage 合計 0
ファイルを認識できません。ここでキャッシュをクリアしてみます。
$ aws storagegateway refresh-cache --file-share-arn arn:aws:storagegateway:ap-northeast-1:<AWSアカウントID>:share/share-0837766A" { "FileShareARN": "arn:aws:storagegateway:ap-northeast-1:<AWSアカウントID>share/share-0837766A" } $ ls -l /home/ec-user2/storage 合計 0 -rw-rw-rw- 1 nfsnobody nfsnobody 0 12月 13 12:14 testfile
無事ファイルを認識することができました。
おわりに
以前のブログでS3バケットをNFSマウントしてみたと書きましたが、実際はS3バケットを直接マウントているわけではなく、あくまでStorageGatewayがキャッシュしたデータを参照していることがよく分かりました。
本エントリが誰かの役に立てれば幸いです。